import pandas as pd
import os
from openai import OpenAI
import time
import requests
from tqdm import tqdm  # 导入 tqdm 库
import random

base_url = "https://api.chatanywhere.tech"  # 设置ChatAnywhere的API端点

# 扩展的提示词列表
# 扩展的提示词列表
# 扩展的营销相关提示词列表
prompts = [
    "请生成一段关于数字营销策略的中文段落，字数约300字。",
    "谈谈品牌建设的重要性，字数约300字。",
    "描述一个成功的市场推广案例，字数约300字。",
    "讨论消费者行为对营销策略的影响，字数约300字。",
    "分享一个关于社交媒体营销的故事，字数约300字。",
    "请生成一段关于内容营销的中文段落，字数约300字。",
    "谈谈如何利用数据分析提升营销效果，字数约300字。",
    "描述一个影响深远的广告创意，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于品牌忠诚度的观点，字数约300字。",
    "谈谈如何通过SEO提升网站流量，字数约300字。",
    "描述一个成功的电子邮件营销活动，字数约300字。",
    "讨论如何利用影响者营销提升品牌知名度，字数约300字。",
    "分享一个关于市场细分的故事，字数约300字。",
    "谈谈如何制定有效的营销预算，字数约300字。",
    "描述一个成功的产品发布策略，字数约300字。",
    "讨论如何在营销中运用心理学原理，字数约300字。",
    "分享一个关于品牌故事的案例，字数约300字。",
    "谈谈如何通过客户反馈改进产品，字数约300字。",
    "描述一个成功的跨渠道营销活动，字数约300字。",
    "请生成一段关于移动营销的中文段落，字数约300字。",
    "讨论如何在营销中实现个性化体验，字数约300字。",
    "分享一个关于危机公关的故事，字数约300字。",
    "谈谈如何利用视频营销吸引消费者，字数约300字。",
    "描述一个成功的市场调研案例，字数约300字。",
    "讨论如何在品牌传播中保持一致性，字数约300字。",
    "分享一个关于用户生成内容的观点，字数约300字。",
    "谈谈如何通过社交媒体提升客户互动，字数约300字。",
    "描述一个成功的品牌重塑案例，字数约300字。",
    "讨论如何在营销中运用故事讲述技巧，字数约300字。",
    "分享一个关于市场趋势分析的故事，字数约300字。",
    "谈谈如何通过线上活动提升品牌参与度，字数约300字。",
    "描述一个成功的品牌合作案例，字数约300字。",
    "讨论如何在营销中运用情感共鸣，字数约300字。",
    "分享一个关于产品定位的观点，字数约300字。",
    "谈谈如何通过精准营销提升转化率，字数约300字。",
    "描述一个成功的品牌推广活动，字数约300字。",
    "讨论如何在数字营销中运用A/B测试，字数约300字。",
    "分享一个关于客户旅程的故事，字数约300字。",
    "谈谈如何通过社群营销提升品牌影响力，字数约300字。",
    "描述一个成功的市场进入策略，字数约300字。",
    "讨论如何在营销中运用社交证明，字数约300字。",
    "分享一个关于品牌价值观的案例，字数约300字。",
    "谈谈如何通过内容营销提升品牌认知，字数约300字。",
    "描述一个成功的广告投放策略，字数约300字。",
    "讨论如何在营销中运用用户体验设计，字数约300字。",
    "分享一个关于品牌差异化的故事，字数约300字。",
    "谈谈如何通过数据驱动的决策提升营销效果，字数约300字。",
    "描述一个成功的市场推广渠道，字数约300字。",
    "讨论如何在营销中运用行为经济学原理，字数约300字。",
    "分享一个关于品牌传播的观点，字数约300字。",
    "谈谈如何通过线上广告提升销售，字数约300字。",
    "描述一个成功的客户关系管理案例，字数约300字。",
    "讨论如何在营销中运用视觉营销策略，字数约300字。",
    "分享一个关于品牌形象塑造的故事，字数约300字。",
    "谈谈如何通过市场分析制定营销策略，字数约300字。",
    "描述一个成功的促销活动，字数约300字。",
    "讨论如何在营销中运用社交媒体分析，字数约300字。",
    "分享一个关于品牌传播渠道的案例，字数约300字。",
    "谈谈如何通过内容创作提升用户参与度，字数约300字。",
    "描述一个成功的市场定位策略，字数约300字。",
    "讨论如何在营销中运用客户细分，字数约300字。",
    "分享一个关于品牌故事讲述的观点，字数约300字。",
    "谈谈如何通过数据分析优化广告投放，字数约300字。",
    "描述一个成功的品牌推广策略，字数约300字。",
    "讨论如何在营销中运用用户体验研究，字数约300字。",
    "分享一个关于品牌忠诚度提升的故事，字数约300字。",
    "谈谈如何通过市场调研了解消费者需求，字数约300字。",
    "描述一个成功的数字广告案例，字数约300字。",
    "讨论如何在营销中运用内容策略，字数约300字。",
    "分享一个关于品牌传播效果评估的观点，字数约300字。",
    "谈谈如何通过社交媒体提升品牌知名度，字数约300字。",
    "描述一个成功的市场推广活动，字数约300字。",
    "讨论如何在营销中运用数据分析工具，字数约300字。",
    "分享一个关于品牌形象重塑的故事，字数约300字。",
    "谈谈如何通过精准广告提升转化率，字数约300字。",
    "描述一个成功的客户满意度调查案例，字数约300字。",
    "讨论如何在营销中运用情感营销策略，字数约300字。",
    "分享一个关于品牌传播渠道优化的观点，字数约300字。",
    "谈谈如何通过内容营销提升用户忠诚度，字数约300字。",
    "描述一个成功的市场推广策略，字数约300字。",
    "讨论如何在营销中运用社交媒体营销工具，字数约300字。",
    "分享一个关于品牌价值提升的故事，字数约300字。",
    "谈谈如何通过市场分析制定产品策略，字数约300字。",
    "描述一个成功的品牌推广活动，字数约300字。",
    "讨论如何在营销中运用用户体验优化，字数约300字。",
    "分享一个关于品牌传播效果的案例，字数约300字。",
    "谈谈如何通过社交媒体提升客户互动，字数约300字。",
    "描述一个成功的市场推广渠道，字数约300字。",
    "讨论如何在营销中运用行为分析，字数约300字。",
    "分享一个关于品牌形象塑造的故事，字数约300字。",
    "谈谈如何通过数据分析提升营销效果，字数约300字。",
    "描述一个成功的广告创意案例，字数约300字。",
    "讨论如何在营销中运用心理学原理，字数约300字。",
    "分享一个关于品牌忠诚度的观点，字数约300字。",
    "谈谈如何通过SEO提升网站流量，字数约300字。",
    "描述一个成功的电子邮件营销活动，字数约300字。",
    "讨论如何利用影响者营销提升品牌知名度，字数约300字。",
    "分享一个关于市场细分的故事，字数约300字。",
    "谈谈如何制定有效的营销预算，字数约300字。",
    "描述一个成功的产品发布策略，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于社交媒体营销的故事，字数约300字。",
    "谈谈品牌建设的重要性，字数约300字。",
    "描述一个成功的市场推广案例，字数约300字。",
    "讨论消费者行为对营销策略的影响，字数约300字。",
    "分享一个关于内容营销的故事，字数约300字。",
    "谈谈如何利用数据分析提升营销效果，字数约300字。",
    "描述一个影响深远的广告创意，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于品牌忠诚度的观点，字数约300字。",
    "谈谈如何通过SEO提升网站流量，字数约300字。",
    "描述一个成功的电子邮件营销活动，字数约300字。",
    "讨论如何利用影响者营销提升品牌知名度，字数约300字。",
    "分享一个关于市场细分的故事，字数约300字。",
    "谈谈如何制定有效的营销预算，字数约300字。",
    "描述一个成功的产品发布策略，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于社交媒体营销的故事，字数约300字。",
    "谈谈品牌建设的重要性，字数约300字。",
    "描述一个成功的市场推广案例，字数约300字。",
    "讨论消费者行为对营销策略的影响，字数约300字。",
    "分享一个关于内容营销的故事，字数约300字。",
    "谈谈如何利用数据分析提升营销效果，字数约300字。",
    "描述一个影响深远的广告创意，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于品牌忠诚度的观点，字数约300字。",
    "谈谈如何通过SEO提升网站流量，字数约300字。",
    "描述一个成功的电子邮件营销活动，字数约300字。",
    "讨论如何利用影响者营销提升品牌知名度，字数约300字。",
    "分享一个关于市场细分的故事，字数约300字。",
    "谈谈如何制定有效的营销预算，字数约300字。",
    "描述一个成功的产品发布策略，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于社交媒体营销的故事，字数约300字。",
    "谈谈品牌建设的重要性，字数约300字。",
    "描述一个成功的市场推广案例，字数约300字。",
    "讨论消费者行为对营销策略的影响，字数约300字。",
    "分享一个关于内容营销的故事，字数约300字。",
    "谈谈如何利用数据分析提升营销效果，字数约300字。",
    "描述一个影响深远的广告创意，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于品牌忠诚度的观点，字数约300字。",
    "谈谈如何通过SEO提升网站流量，字数约300字。",
    "描述一个成功的电子邮件营销活动，字数约300字。",
    "讨论如何利用影响者营销提升品牌知名度，字数约300字。",
    "分享一个关于市场细分的故事，字数约300字。",
    "谈谈如何制定有效的营销预算，字数约300字。",
    "描述一个成功的产品发布策略，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于社交媒体营销的故事，字数约300字。",
    "谈谈品牌建设的重要性，字数约300字。",
    "描述一个成功的市场推广案例，字数约300字。",
    "讨论消费者行为对营销策略的影响，字数约300字。",
    "分享一个关于内容营销的故事，字数约300字。",
    "谈谈如何利用数据分析提升营销效果，字数约300字。",
    "描述一个影响深远的广告创意，字数约300字。",
    "讨论如何在竞争激烈的市场中脱颖而出，字数约300字。",
    "分享一个关于品牌忠诚度的观点，字数约300字。",
    "谈谈如何通过SEO提升网站流量，字数约300字。",
    "描述一个成功的电子邮件营销活动，字数约300字。",
    "讨论如何利用影响者营销提升品牌知名度，字数约300字。",
    "分享一个关于市场细分的故事，字数约300字。",
    "谈谈如何制定有效的营销预算，字数约300字。",
    "描述一个成功的产品发布策略，字数约300字。",
    】

def save_to_excel(data, filename, max_rows=1000000):
    """将数据分批保存到多个Excel文件"""
    if not data:
        return

    # 创建输出目录
    os.makedirs('output3', exist_ok=True)

    # 计算需要多少个文件
    total_chunks = (len(data) + max_rows - 1) // max_rows

    for i in range(total_chunks):
        start_idx = i * max_rows
        end_idx = min((i + 1) * max_rows, len(data))
        chunk_data = data[start_idx:end_idx]

        # 生成文件名
        if total_chunks > 1:
            chunk_filename = f'output3/{filename}_{i+1}.xlsx'
        else:
            chunk_filename = f'output3/{filename}.xlsx'

        # 保存数据
        df = pd.DataFrame(chunk_data)
        df.to_excel(chunk_filename, index=False)
        print(f"保存数据到 {chunk_filename}, 共 {len(chunk_data)} 条")

def generate_or_translate_text(client, prompt: str, is_translation=False) -> str:
    """生成或翻译文本"""
    if is_translation:
        prompt = f"请将以下中文翻译成英文:\n{prompt}"

    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}],
        temperature=0.9,  # 增加温度以提高多样性
        max_tokens=400
    )
    return response.choices[0].message.content.strip()

def create_dataset(api_key: str, output_file: str, num_paragraphs: int = 500):
    """生成数据集并保存到Excel文件"""
    client = OpenAI(api_key=api_key, base_url=base_url)

    data = []  # 确保在这里初始化 data 列表

    # 使用 tqdm 显示进度条
    for _ in tqdm(range(num_paragraphs), desc="生成段落进度"):
        try:
            # 随机选择一个提示词
            prompt = random.choice(prompts)
            # 添加一些随机上下文
            additional_context = random.choice([
                "请结合个人经历，",
                "考虑到当前的社会背景，",
                "从历史的角度来看，"
            ])
            full_prompt = additional_context + prompt

            # 生成中文段落
            original_text = generate_or_translate_text(client, full_prompt)
            # 翻译为英文
            translated_text = generate_or_translate_text(client, original_text, is_translation=True)
            # 添加到数据列表
            data.append({"指令": "将教育相关的中文翻译为英语", "原文": original_text, "译文": translated_text})
            time.sleep(2)  # 添加延迟以避免频率限制
        except Exception as e:
            print(f"生成或翻译时出错: {e}")

    # 保存到Excel文件
    df = pd.DataFrame(data)
    df.to_excel(output_file, index=False)
    print(f"数据集已保存至 {output_file}")

    return data  # 返回生成的数据

def fetch_data(endpoint):
    url = f"{base_url}/{endpoint}"  # 使用 base_url 变量构建完整的 API URL
    response = requests.get(url)  # 发送 GET 请求
    return response.json()  # 返回 JSON 格式的响应

def call_ai_model(data):
    url = f"{base_url}/ai/model"  # 使用 base_url 变量构建 AI 模型的 API URL
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer sk-8r4yikeXCMIrSdq01K2bKCnKjrbAk97NY2bJPAhfnyjXXeFK"  # 添加 API 密钥
    }
    response = requests.post(url, json=data, headers=headers)  # 发送 POST 请求
    return response.json()  # 返回 JSON 格式的响应

def main():
    # 初始化 OpenAI 客户端
    client = OpenAI(api_key='sk-PEvjpQELoLDQqNX75f8c457d2cC244E4846a4c13C497Fd73')  #API key

    # 生成数据
    print("开始生成教育相关内容...")
    API_KEY = "sk-8r4yikeXCMIrSdq01K2bKCnKjrbAk97NY2bJPAhfnyjXXeFK"
    OUTPUT_FILE = "教育段落数据集.xlsx"

    data = create_dataset(API_KEY, OUTPUT_FILE, num_paragraphs=560)  # 生成num_paragraphs个段落

    # 保存数据
    if data:
        save_to_excel(data, 'education_dataset')
        print("\n所有数据已保存到 output3 目录")
    else:
        print("未生成任何数据")

if __name__ == "__main__":
    main()